<?php
/**
 * FileName: TraitController.php
 * Author: Fei.Song
 * Date: 2021/4/1 11:35
 * Created by PhpStorm
 * Desc: 基类统一方法
 */

namespace App\Http\Controllers;


use Illuminate\Http\Request;

trait TraitController {

    /**
     * @var string 守卫名称
     */
    public $guard_name = 'web';

    /**
     * @var Request
     */
    public Request $request;

    /**
     * 初始化方法
     */
    public function _init() {
        //
    }

    /**
     * 获取当前登录用户
     */
    public function getCurrentUser() {
        return getCurrentUser();
    }

    /**
     * 获取当前用户管理站点ID
     */
    public function getSiteId() {
        return getCurrentSiteId();
    }

    public function getCurrentSite() {
        //Todo 返回管理站点
    }

    /**
     * 获取成功的结果
     * @params $params 返回的数据数组
     * @params $msg    返回的错误信息
     * @params $type    1表示数组，2表示json
     */

    public function success($params, $msg = "查询成功", $type = 1) {
        $data = [
            "error" => 0,
            "msg" => $msg,
            "data" => $params
        ];
        return $type == 1 ? $data : response()->json($data)->setEncodingOptions(JSON_UNESCAPED_UNICODE);
    }

    /**
     * 获取成功的结果
     * @params $error  错误码，大于0
     * @params $msg    返回的错误信息
     * @params $type    1表示数组，2表示json
     */

    public function error($error, $msg, $type = 1, $params = []) {
        $data = [
            "error" => $error,
            "msg" => $msg,
            "data" => $params
        ];
        return $type == 1 ? $data : response()->json($data)->setEncodingOptions(JSON_UNESCAPED_UNICODE);
    }

    /**
     * 返回成功layui数据格式
     * @param $params 获取的数据
     * @param $count 数据量
     * @param $msg 信息
     */
    public function layuiDataSuccess($params, $count = 0, $msg = "查询成功") {
        return [
            "code" => 0,
            "msg" => $msg,
            "count" => $count,
            "data" => $params,
        ];
    }

    /**
     * 返回失败layui数据格式
     * @param $code 返回错误码,大于0
     * @param $msg 信息
     */
    public function layuiDataError($code, $msg = "查询失败") {
        return [
            "code" => $code,
            "msg" => $msg,
            "count" => 0,
            "data" => [],
        ];
    }

    /**
     * 返回模板成功消息
     * @param $uri 路由名称
     * @param $msg 消息内容
     * @param $type 消息类型 success info warning error
     */
    public function tempNotice($uri, $msg, $type = "success") {
        return redirect(\route($uri))->with($type, $msg);
    }

    /**
     * 返回laravel错误消息
     * @param $uri 路由名称
     * @param $msg 消息内容
     * @param $params 路由参数
     * @param $type 消息类型 success info warning error
     */
    public function tempLaravelError($uri, $msg,$params=[],$type="error") {
        return redirect(\route($uri,$params))->with($type,$msg);
    }

    /**
     * 自定义模板消息内容
     * @param $uri 路由名称
     * @param $title 消息名称
     * @param $msg 消息内容
     */
    public function tempAutoNotice($uri, $title, $msg) {
        return redirect(\route($uri))->with($title, $msg);
    }

}
